package com.itheima.ood.demo01;

/**
 * 动物类
 */
public abstract class Animal {

    // 抽象类中定义了构造方法

    /**
     * 抽象类不能直接通过new关键字去对象对象，那么这个构造方法有什么意义？
     * 这个构造方法的作用就是用于子类在进行初始化时去调用父类的构造方法进行父类数据的初始化操作
     */
    public Animal(){

    }

    // 喝水的方法
    public void drink(){
        System.out.println("在喝水......");
    }

    /**
     * 定义吃东西的方法，但是由于每一个动态吃的东西是不一样的，因此在定义这个吃东西方法的时候我们就不能给出具体的方法体
     * 那么这个方法我们就应该定义成抽象方法
     */
    public abstract void eat();

    /**
     * 如果一个类中定义了抽象方法，那么这个类我们就必须将其定义成抽象类
     * 抽象类中可以不存在抽象方法, 如果一个类中没有抽象方法，我们还需要将其定义为抽象类吗？
     * 如果我们不想让其他类去创建该类的对象，那么我们就应该将其定义为抽象类
     *
     */


}
